Search engines are useful for retrieving information from sources such as the World Wide Web or document databases. Existing search engines often use a keyword search approach. Keyword search engines typically allow the user to enter one or more keywords and use an index to locate all the documents that contain the keyword entries. While the keyword based approach is useful, several problems remain. Since keyword searches often require an exact syntax match, if a user enters a keyword that is not an exact match or forms a query using language that is different from the language in the documents, the search engine may fail to find the most appropriate result. For example, if a user of a photo editing program enters “remove red eye”, a document with the pertinent information that uses the word “eliminate” rather than “remove” is likely to be overlooked by a standard keyword search engine. Although a more advanced query such as “(remove OR eliminate) AND red eye” may improve the search, many users may find such a query cumbersome and difficult.
Keyword search is sometimes of limited utility for documents that contain the pertinent subject matter yet do not include any of the words that would normally be used to search for the subject, documents that include non-text information such as images, audio/video clips, documents written in another language, etc. Furthermore, if the source includes a large number of documents that include the right keywords, the number of matches may be too large to be useful for the user. It would be desirable to have a search mechanism that could address the shortcomings of keyword searches and provide more accurate search results in a user-friendly way.